package com.hskj.springboot.config;

import com.hskj.springboot.handler.MyAuthenticationFailureHandler;
import com.hskj.springboot.handler.MyAuthenticationSuccessHandler;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;

@Configuration
public class MyWebSecurityConfigurerAdapter extends WebSecurityConfigurerAdapter {
    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.authorizeRequests()
                // mvcMatchers:配置所要放行资源的urL
                // permitALL():放行mvcMatchers配置的urL路径
                // mvcMatchers要写在所有请求之前
                .mvcMatchers("/index").permitAll()
                //登陆资源进行放行
                .mvcMatchers("/login.html").permitAll()
                //对其他所有的资源全部进行拦截
                .anyRequest().authenticated().and().formLogin()
                //配置自定义登录界面的路径
                .loginPage("/login.html")
                // 指定处理登录请求的url
                .loginProcessingUrl("/user/login")
                //前后端分离的登录 成功，以json的数据发送给前端
//                .successHandler(new MyAuthenticationSuccessHandler())
                //前后端分离的登录 失败，以json的数据发送给前端
//                .failureHandler(new MyAuthenticationFailureHandler())
                //web 登陆成功的方式----重定向，只会到达默认页面
                .defaultSuccessUrl("/success",true)
                //web 登陆成功的方式----重定向，只会到达上一个请求的页面
//                .defaultSuccessUrl("/success")
                //web 登陆成功的方式----请求转发，到达指定页面
                .successForwardUrl("/success")
                .and()
                // 关闭csrf攻击 跨站请求保护
                .csrf().disable();

    }
}
